//
//  HomeTableViewController.swift
//  Weibo
//
//  Created by 明丽 on 16/1/10.
//  Copyright © 2016年 明丽. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD
private let HomeCellId = "HomeCellId"

class HomeTableViewController: MainTableViewController {
    let myRefresh = WBREfreshControl()
    
    //定义viewmodel属性
    private lazy var listViewModel = statusListViewModel()
    
    //模型数据
    // private lazy var statues = [Status]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if userLogin==false{
            visitroLoginView?.setupUIWithInfo(nil, titleName: "关注一些人，回这里看看有什么惊喜")
            return;
        }
        
        
        //准备数据
        prepareTableView()
    }
    
    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
        LoadData()
        
        
    }
    
    //准备tableView
    private func prepareTableView(){
        
        self.tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        //设置固定行高测试用的
        //        self.tableView.rowHeight = 200
        
        //设置预估行高
        self.tableView.estimatedRowHeight = 200
        //设置预估行高
        self.tableView.rowHeight = UITableViewAutomaticDimension
        
        //设置分割线
        tableView.separatorStyle = .None
        //使用系统的刷新空间时间
        //refreshControl = UIRefreshControl()
        self.tableView.addSubview(myRefresh)
        myRefresh.addTarget(self, action: "LoadData", forControlEvents: .ValueChanged)
        //添加点击事件,.ValueChanged改变
        // refreshControl?.addTarget(self, action:"LoadData", forControlEvents: .ValueChanged)
        //添加底部小菊花
        tableView.tableFooterView = indicatorView
        
    }
    //加载首页数据
    @objc  private func LoadData() {
        listViewModel.loadHomeData(indicatorView.isAnimating()) { (isSuccess) -> () in
            //停止刷新的动画
            self.myRefresh.endrefreshing()
            
            if !isSuccess {
                //请求首页数据失败
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                return
            }
            
            //停止 上拉加载更多数据的小菊花转动动画
            if self.indicatorView.isAnimating() {
                //停止转动
                self.indicatorView.stopAnimating()
            }
            //请求数据一定成功
            //刷新列表
            self.tableView.reloadData()
        }
        
    }
    
    
    //小菊花
    private lazy var indicatorView: UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
}
//在扩展中实现tableView的数据源方法
extension HomeTableViewController{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        print(self.listViewModel.statuses.count)
        return self.listViewModel.statuses.count
        
        
        
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath:indexPath) as! StatusCell
        cell.status=self.listViewModel.statuses[indexPath.row]
        //显示转发微博数据
        //print(self.statues[indexPath.row].retweeted_status?.text)
        
        //显示文案
        // cell.textLabel?.text = self.statues[indexPath.row].user?.name
        //将要加载cell最后一个时,并且小菊花没有转的时候加载这个方法
        if indexPath.row == self.listViewModel.statuses.count-1 && indicatorView.isAnimating() {
            //让小菊花转
            indicatorView.startAnimating()
            //开始数据加载
            LoadData()
            print("开始静默加载数据")
            
        }
        
        
        
        return cell
    }
}
